1. Field
The embodiments relate to frame processing optimization, and more particularly to frame processing optimization for wide port devices.
2. Description of the Related Art
The serial attached SCSI (small computer systems interface) (SAS) standard (standard (e.g., Version 1.1, Revision 09d, May 30, 2005; SAS-1.1) specifies two type of frames—interlock and non-interlock frames. It is required that an interlock frame be acknowledged before another frame is sent. For non-interlock frames, the transmitter can send multiple non-interlock frames before getting acknowledgements. Also, acknowledge/non-acknowledge (ACK/NAK) is balanced when the total number of received ACK/NAK is the same as the total transmitted frames. The SAS standard also allows a frame transmitter to switch to another phy within a wide port device (e.g., a four lane port device) to continue sending the remaining frames of the same input/output (I/O) or I_T_L_Q Nexus (SCSI Initiator, SCSI Target, Logical Unit, and Tagged Task) after ACK/NAK became balanced on the original phy in SAS SSP (SAS transport data) wide port configuration.
When multiple frames of the same I/O on different receiving paths are ready for the corresponding receive transport (RX) engines to process, it is very difficult and complex for the RX transport engines to determine the frame processing order across all the lanes within a SAS wide port device. The most commonly used technique is a time stamping method, which can involve complex time stamp searching and comparing among all the lanes within a wide port device configuration. This also requires a lot of communication among those lanes. Note that, it is suggested that all the received frames of the same I/O be processed in order with respect to the relative offset (RO) order in most of the applications. For example of an I/O with starting address 0 and 4 k byte count, it is suggested that the RX transport engines process a frame with relative offset 0 first, relative offset 1 k second, relative offset 2 k third, and relative offset 3 k last assuming that the 4 k I/O is broken up with 1 k which is the maximum frame size in SAS standard.